extends CharacterBody2D


const SPEED:float = 130.0
const JUMP_VELOCITY:float = -300.0

# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")

@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D


func _physics_process(delta: float) -> void:
	# Add the gravity.
	if not is_on_floor():
		velocity.y += gravity * delta

	# 跳跃：赋予跳跃起始，播放跳跃音乐
	if Input.is_action_just_pressed("jump") and is_on_floor():
		velocity.y = JUMP_VELOCITY
		play_jump_sound()

	# 获取移动的方向（-1，0，1）
	var direction := Input.get_axis("move_left", "move_right")
	# 翻转精灵动画
	if direction > 0:
		animated_sprite.flip_h = false
	elif direction < 0:
		animated_sprite.flip_h = true
	# 播放动画
	if is_on_floor():
		if direction == 0:
			animated_sprite.play("idle")
		else:
			animated_sprite.play("run")
	else:
		animated_sprite.play("jump")
	# 移动
	if direction:
		velocity.x = direction * SPEED
	else:
		velocity.x = move_toward(velocity.x, 0, SPEED)

	move_and_slide()

# 播放死亡音乐
func play_die_sound() -> void:
	$AudioStreamPlayerDie.play()

# 播放跳跃音乐
func play_jump_sound() -> void:
	$AudioStreamPlayerJump.play()
